#include <iostream>
#include <vector>
#include <climits>
using ll=long long;
using namespace std;

int main() {
	
	int n,k,d;
	cin>>n>>k>>d;
	vector<ll> vecArr(n);
	vector<vector<ll>> f(n,vector<ll>(k+1,LLONG_MAX));
	vector<vector<ll>> g(n,vector<ll>(k+1,LLONG_MIN));
	ll llRet=LLONG_MIN;
	for(int i=0;i<n;++i){
		cin>>vecArr[i];
		f[i][1]=g[i][1]=vecArr[i];
	}
	for(int z=2;z<=k;z++){
		for(int i=0;i<n;++i){0
			for(int j=max(0,i-d);j<i;j++){
				ll v1=f[j][z-1]*vecArr[i];
				ll v2=g[j][z-1]*vecArr[i];
				if(v1!=LLONG_MAX && v2!=LLONG_MIN){
					f[i][z]=min(f[i][z],min(v1,v2));
					g[i][z]=max(g[i][z],max(v1,v2));					
				}

			}
		}
	}
	for(int i=0;i<n;++i){
		llRet=max(llRet,g[i][k]);
	}
	cout<<llRet<<endl;
	
	return 0;
}
